package com.cdtye.itps.cms.mapper.plan;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.cdtye.itps.cms.dao.plan.entity.JcjcPlanDetail;
import com.cdtye.itps.cms.dao.plan.vo.JcjcPlanDetailVo;
import com.cdtye.itps.cms.dao.plan.vo.YearPlanManagementIndexVo;
import com.cdtye.itps.cms.dao.result.CycleCheckCoverResVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Repository
public interface JcjcPlanDetailMapper extends BaseMapper<JcjcPlanDetail> {

    /**
     * 分页查询
     */
    IPage<Map<String,Object>> listPage(IPage page, @Param("vo") JcjcPlanDetailVo vo);

    /**
     * 列表获取
     */
    List<Map<String,Object>> getList(@Param("vo") JcjcPlanDetailVo vo);

    /**
     *检测计划管理首页-本年计划基本信息
     */
    Map<String,Object> getYearPlanBasic(@Param("vo") JcjcPlanDetailVo vo);

    /**
     *检测计划管理首页-本年度各单位年检测计划完成率
     */
    Map<String,Object> getYearPlanCompletionRate(@Param("vo") JcjcPlanDetailVo vo);

    /**
     *检测计划管理首页-检测计划概况
     */
    List<Map<String,Object>> getYearPerMonthPlanNum(@Param("vo") YearPlanManagementIndexVo vo);

    /**
     *检测计划管理首页-检测计划概况
     */
    List<Map<String,Object>> getYearPerMonthPlanTotalNum(@Param("vo") YearPlanManagementIndexVo vo);

    /**
     *检测计划管理首页-检测计划概况
     */
    List<Map<String,Object>> getYearPerMonthPlanOverTimeNum(@Param("vo") YearPlanManagementIndexVo vo);

    /**
     *检测计划管理首页-预警信息
     */
    List<Map<String,Object>> getEarlyWarning(@Param("vo") YearPlanManagementIndexVo vo);

    /**
     *首页-超期预警情况-计划
     */
    Map<String,Object> getPlanOverWarn(@Param("vo")JcjcPlanDetailVo vo);

    /**
     *首页-检测计划兑现详情-周期检测执行情况
     */
    List<Map> overdueUnexecutedNum(@Param("vo") JcjcPlanDetailVo vo);

    /**
     *首页-检测计划兑现详情-超期未执行线路Top5
     */
    IPage<Map<String,Object>> overdueUnexecutedLine(IPage page, @Param("vo")JcjcPlanDetailVo vo);

    /**
     * 计算实际周期检测覆盖情况
     */
    CycleCheckCoverResVo actualCover(@Param("vo") JcjcPlanDetailVo vo);


    List<Map> selectActualLine(Map param);

    List<Map> selectLineGroupMonth(Map param);
}
